package com.cencat.order.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 固定商家视图对象
 * 
 * @author cencat
 * @date 2024-01-20
 */
@Data
@Accessors(chain = true)
public class MerchantVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 商家ID
     */
    private Long merchantId;

    /**
     * 商家编号
     */
    private String merchantCode;

    /**
     * 商家名称
     */
    private String merchantName;

    /**
     * 商家简称
     */
    private String merchantShortName;

    /**
     * 商家类型(1-餐饮 2-零售 3-生鲜 4-医药 5-其他)
     */
    private Integer merchantType;

    /**
     * 商家类型描述
     */
    private String merchantTypeDesc;

    /**
     * 商家状态(0-禁用 1-启用 2-审核中 3-审核拒绝)
     */
    private Integer merchantStatus;

    /**
     * 商家状态描述
     */
    private String merchantStatusDesc;

    /**
     * 联系人姓名
     */
    private String contactName;

    /**
     * 联系电话
     */
    private String contactPhone;

    /**
     * 联系邮箱
     */
    private String contactEmail;

    /**
     * 商家地址
     */
    private String merchantAddress;

    /**
     * 详细地址
     */
    private String detailAddress;

    /**
     * 经度
     */
    private BigDecimal longitude;

    /**
     * 纬度
     */
    private BigDecimal latitude;

    /**
     * 省份
     */
    private String province;

    /**
     * 城市
     */
    private String city;

    /**
     * 区县
     */
    private String district;

    /**
     * 邮政编码
     */
    private String postalCode;

    /**
     * 营业执照号
     */
    private String businessLicense;

    /**
     * 营业执照图片
     */
    private String licenseImage;

    /**
     * 法人姓名
     */
    private String legalPerson;

    /**
     * 法人身份证号
     */
    private String legalIdCard;

    /**
     * 注册资本
     */
    private BigDecimal registeredCapital;

    /**
     * 成立日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime establishDate;

    /**
     * 营业开始时间
     */
    private String businessStartTime;

    /**
     * 营业结束时间
     */
    private String businessEndTime;

    /**
     * 是否24小时营业
     */
    private Boolean is24Hours;

    /**
     * 休息日(1-周一 2-周二 ... 7-周日，多个用逗号分隔)
     */
    private String restDays;

    /**
     * 认证状态(0-未认证 1-认证中 2-已认证 3-认证失败)
     */
    private Integer authStatus;

    /**
     * 认证状态描述
     */
    private String authStatusDesc;

    /**
     * 认证时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime authTime;

    /**
     * 认证失败原因
     */
    private String authFailReason;

    /**
     * 绑定司机数量
     */
    private Integer bindDriverCount;

    /**
     * 最大绑定司机数
     */
    private Integer maxBindDrivers;

    /**
     * 今日订单数
     */
    private Integer todayOrderCount;

    /**
     * 本月订单数
     */
    private Integer monthlyOrderCount;

    /**
     * 总订单数
     */
    private Integer totalOrderCount;

    /**
     * 今日配送费
     */
    private BigDecimal todayDeliveryFee;

    /**
     * 本月配送费
     */
    private BigDecimal monthlyDeliveryFee;

    /**
     * 总配送费
     */
    private BigDecimal totalDeliveryFee;

    /**
     * 平均配送时间(分钟)
     */
    private Integer avgDeliveryTime;

    /**
     * 配送成功率(%)
     */
    private BigDecimal deliverySuccessRate;

    /**
     * 客户满意度评分
     */
    private BigDecimal customerSatisfaction;

    /**
     * 评价总数
     */
    private Integer totalRatingCount;

    /**
     * 好评数
     */
    private Integer goodRatingCount;

    /**
     * 中评数
     */
    private Integer mediumRatingCount;

    /**
     * 差评数
     */
    private Integer badRatingCount;

    /**
     * 好评率(%)
     */
    private BigDecimal goodRatingRate;

    /**
     * 信用等级(1-A 2-B 3-C 4-D)
     */
    private Integer creditLevel;

    /**
     * 信用等级描述
     */
    private String creditLevelDesc;

    /**
     * 信用分数
     */
    private BigDecimal creditScore;

    /**
     * 保证金
     */
    private BigDecimal deposit;

    /**
     * 已缴保证金
     */
    private BigDecimal paidDeposit;

    /**
     * 账户余额
     */
    private BigDecimal accountBalance;

    /**
     * 冻结金额
     */
    private BigDecimal frozenAmount;

    /**
     * 结算方式(1-日结 2-周结 3-月结)
     */
    private Integer settlementMethod;

    /**
     * 结算方式描述
     */
    private String settlementMethodDesc;

    /**
     * 银行账户
     */
    private String bankAccount;

    /**
     * 开户行
     */
    private String bankName;

    /**
     * 开户人
     */
    private String accountHolder;

    /**
     * 配送范围(公里)
     */
    private BigDecimal deliveryRange;

    /**
     * 最小配送金额
     */
    private BigDecimal minDeliveryAmount;

    /**
     * 配送费
     */
    private BigDecimal deliveryFee;

    /**
     * 免配送费金额
     */
    private BigDecimal freeDeliveryAmount;

    /**
     * 是否支持预约配送
     */
    private Boolean supportScheduledDelivery;

    /**
     * 是否支持加急配送
     */
    private Boolean supportUrgentDelivery;

    /**
     * 加急配送费
     */
    private BigDecimal urgentDeliveryFee;

    /**
     * 商家Logo
     */
    private String merchantLogo;

    /**
     * 商家图片
     */
    private String merchantImages;

    /**
     * 商家描述
     */
    private String merchantDescription;

    /**
     * 特色服务
     */
    private String specialServices;

    /**
     * 最后登录时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastLoginTime;

    /**
     * 最后下单时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastOrderTime;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}